<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>SemOpt: Labelling Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>


</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">SemOpt
   &#160;<span id="projectnumber">0.2alpha5-SCC</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.6.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('classLabelling.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#pri-attribs">Private Attributes</a>  </div>
  <div class="headertitle">
<div class="title">Labelling Class Reference</div>  </div>
</div><!--header-->
<div class="contents">
<!-- doxytag: class="Labelling" -->
<p>Class representing a single labelling assignment.  
 <a href="classLabelling.html#details">More...</a></p>
<div class="dynheader">
Collaboration diagram for Labelling:</div>
<div class="dyncontent">
<div class="center"><img src="classLabelling__coll__graph.png" border="0" usemap="#Labelling_coll__map" alt="Collaboration graph"/></div>
<map name="Labelling_coll__map" id="Labelling_coll__map">
<area shape="rect" id="node2" href="classSetArguments.html" title="Class encompassing a set of arguments." alt="" coords="5,5,109,35"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>

<p><a href="classLabelling-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1b39efa4639854ab11d540037e24c425"></a><!-- doxytag: member="Labelling::Labelling" ref="a1b39efa4639854ab11d540037e24c425" args="()" -->
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#a1b39efa4639854ab11d540037e24c425">Labelling</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#adf68a6209e54925a46d30aa8369369dc">Labelling</a> (<a class="el" href="classSetArguments.html">SetArguments</a> *set)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">construct a new <a class="el" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a> structure starting from a <a class="el" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a>.  <a href="#adf68a6209e54925a46d30aa8369369dc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#a79e25a77b942e8395431fceceea2bb63">add_label</a> (<a class="el" href="classArgument.html">Argument</a> *, Label)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a new label to this set of labelling.  <a href="#a79e25a77b942e8395431fceceea2bb63"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#a7d3ce55a661689eaa83408d4d9424117">exists_argument_labelling</a> (<a class="el" href="classArgument.html">Argument</a> *)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether an argument is in this labelling or not.  <a href="#a7d3ce55a661689eaa83408d4d9424117"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">Label&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#a37bb1885f6412e0a2c66bde384413e43">get_label</a> (<a class="el" href="classArgument.html">Argument</a> *)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the label of a given argument.  <a href="#a37bb1885f6412e0a2c66bde384413e43"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSetArguments.html">SetArguments</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#af8aa0d976a665c1a9ebbdb801d0a867d">inargs</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the set of arguments labelled as `in`.  <a href="#af8aa0d976a665c1a9ebbdb801d0a867d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSetArguments.html">SetArguments</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#afc828a13d1a3e406f56fa1f212b4824d">outargs</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the set of arguments labelled as `out`.  <a href="#afc828a13d1a3e406f56fa1f212b4824d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSetArguments.html">SetArguments</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#aedf4e3c3b0150317e5350945f088a424">undecargs</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the set of arguments labelled as `undec`.  <a href="#aedf4e3c3b0150317e5350945f088a424"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#ac717b73662047c2ab68e0828ff3dc54e">empty</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether or not this labelling is empty.  <a href="#ac717b73662047c2ab68e0828ff3dc54e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#a600661b61ebd7f0da5faea3fdef97b6c">clone</a> (<a class="el" href="classLabelling.html">Labelling</a> *)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Clone this labelling into a new one.  <a href="#a600661b61ebd7f0da5faea3fdef97b6c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSetArguments.html">SetArguments</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#aa100bea37cb704545d188252ef03286f">getSetArguments</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">converts a <a class="el" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a> structure in a <a class="el" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a>  <a href="#aa100bea37cb704545d188252ef03286f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classLabelIterator.html">LabelIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#a5a0b6aa6ad39b35bac7ac2b8a37dec71">begin</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the first Label of the argument inside this set.  <a href="#a5a0b6aa6ad39b35bac7ac2b8a37dec71"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classLabelIterator.html">LabelIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#a9fba5e876b11a7cd0170b89b122cfdfb">end</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the last Label of the argument inside this set.  <a href="#a9fba5e876b11a7cd0170b89b122cfdfb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#ae96fb462fa9b3bd7becbd7744e21eb78">size</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">get the number of elements stored in this set  <a href="#ae96fb462fa9b3bd7becbd7744e21eb78"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classLabelIterator.html">LabelIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#a30feb527f78da10b5132f8acdd5d8f5b">find</a> (const <a class="el" href="classArgument.html">Argument</a> *arg)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">find a Label which has as key the pointer to an <a class="el" href="classArgument.html" title="Class representing an Argument.">Argument</a>  <a href="#a30feb527f78da10b5132f8acdd5d8f5b"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf7f367dd2253b297cad3c622a0d2f49"></a><!-- doxytag: member="Labelling::lab_in" ref="aaf7f367dd2253b297cad3c622a0d2f49" args="" -->
static const Label&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#aaf7f367dd2253b297cad3c622a0d2f49">lab_in</a> = &quot;in&quot;</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Label representing an `in` argument. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afed946f9be5cb9f3d60ca37e4baf45ba"></a><!-- doxytag: member="Labelling::lab_out" ref="afed946f9be5cb9f3d60ca37e4baf45ba" args="" -->
static const Label&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#afed946f9be5cb9f3d60ca37e4baf45ba">lab_out</a> = &quot;out&quot;</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Label representing an `out` argument. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4ae2c985855b2a4c084618b6493b0d92"></a><!-- doxytag: member="Labelling::lab_undec" ref="a4ae2c985855b2a4c084618b6493b0d92" args="" -->
static const Label&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#a4ae2c985855b2a4c084618b6493b0d92">lab_undec</a> = &quot;undec&quot;</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Label representing an `undec` argument. <br/></td></tr>
<tr><td colspan="2"><h2><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">map&lt; <a class="el" href="classArgument.html">Argument</a> *, Label &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classLabelling.html#a8512ec47bffffe4ca1d8650cc61e55a9">labelling</a></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Class representing a single labelling assignment. </p>
<dl class="author"><dt><b>Author:</b></dt><dd>Federico Cerutti &lt;<a href="mailto:federico.cerutti@acm.org">federico.cerutti@acm.org</a>&gt; </dd></dl>
<dl class="copyright"><dt><b>Copyright:</b></dt><dd>GNU Public License v2 </dd></dl>

<p>Definition at line <a class="el" href="Labelling_8h_source.html#l00051">51</a> of file <a class="el" href="Labelling_8h_source.html">Labelling.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="adf68a6209e54925a46d30aa8369369dc"></a><!-- doxytag: member="Labelling::Labelling" ref="adf68a6209e54925a46d30aa8369369dc" args="(SetArguments *set)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classLabelling.html#a1b39efa4639854ab11d540037e24c425">Labelling::Labelling</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classSetArguments.html">SetArguments</a> *&#160;</td>
          <td class="paramname"><em>set</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>construct a new <a class="el" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a> structure starting from a <a class="el" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a>. </p>
<p>Use this constructor if you want to convert a <a class="el" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a> data in a <a class="el" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a> instance</p>
<dl class="pre"><dt><b>Precondition:</b></dt><dd><ul>
<li>set not NULL</li>
</ul>
</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">set</td><td>represents the set that contains all the initial Arguments of this <a class="el" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00051">51</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

<p>References <a class="el" href="Labelling_8cpp_source.html#l00140">add_label()</a>, and <a class="el" href="Labelling_8h_source.html#l00062">labelling</a>.</p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a79e25a77b942e8395431fceceea2bb63"></a><!-- doxytag: member="Labelling::add_label" ref="a79e25a77b942e8395431fceceea2bb63" args="(Argument *, Label)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classLabelling.html#a79e25a77b942e8395431fceceea2bb63">Labelling::add_label</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArgument.html">Argument</a> *&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Label&#160;</td>
          <td class="paramname"><em>l</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Add a new label to this set of labelling. </p>
<p>This function allows you to add a association &lt;Argument*, Label&gt; inside the map structure held in the caller <a class="el" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a> structure. Before to add the association to the map, however, this function check if the key arg is already present in the map: </p>
<ul>
<li>if it isn't, the association is added to the map; </li>
<li>if it is the map remains <b>unchanged</b>;</li>
</ul>
<dl class="pre"><dt><b>Precondition:</b></dt><dd><ul>
<li>arg points to an existing <a class="el" href="classArgument.html" title="Class representing an Argument.">Argument</a> </li>
</ul>
</dd></dl>
<dl class="post"><dt><b>Postcondition:</b></dt><dd><ul>
<li>the association &lt;arg,l&gt;is added to the map only if the uniqueness of the key is preserved.</li>
</ul>
</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>The argument to which this labelling applies </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">l</td><td>The label. Valid values for are: * <a class="el" href="classLabelling.html#aaf7f367dd2253b297cad3c622a0d2f49" title="Label representing an `in` argument.">Labelling::lab_in</a> * <a class="el" href="classLabelling.html#afed946f9be5cb9f3d60ca37e4baf45ba" title="Label representing an `out` argument.">Labelling::lab_out</a> * <a class="el" href="classLabelling.html#a4ae2c985855b2a4c084618b6493b0d92" title="Label representing an `undec` argument.">Labelling::lab_undec</a> </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00140">140</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

<p>References <a class="el" href="SetArguments_8cpp_source.html#l00056">SetArguments::add_Argument()</a>, <a class="el" href="Labelling_8h_source.html#l00069">lab_in</a>, <a class="el" href="Labelling_8h_source.html#l00070">lab_out</a>, <a class="el" href="Labelling_8h_source.html#l00071">lab_undec</a>, and <a class="el" href="Labelling_8h_source.html#l00062">labelling</a>.</p>

<p>Referenced by <a class="el" href="Labelling_8cpp_source.html#l00212">clone()</a>, and <a class="el" href="Labelling_8cpp_source.html#l00051">Labelling()</a>.</p>

</div>
</div>
<a class="anchor" id="a5a0b6aa6ad39b35bac7ac2b8a37dec71"></a><!-- doxytag: member="Labelling::begin" ref="a5a0b6aa6ad39b35bac7ac2b8a37dec71" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classLabelIterator.html">LabelIterator</a> <a class="el" href="classLabelling.html#a5a0b6aa6ad39b35bac7ac2b8a37dec71">Labelling::begin</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return the first Label of the argument inside this set. </p>
<p>The function is used to cycle among all the Argument* stored in this <a class="el" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a> instance. You can use this function to enumerate the arguments store in this instance using this code:</p>
<div class="fragment"><pre class="fragment">  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it=labelingInstance-&gt;begin();it!=labellingInstance-&gt;end(); it++){
        cout &lt;&lt; <span class="stringliteral">&quot;argument stored: &lt;&lt; afInstance.getArgumentsByName(*it)&lt;&lt; endl;</span>
<span class="stringliteral">  }</span>
</pre></div><dl class="return"><dt><b>Returns:</b></dt><dd>an iterator pointing the Label of the first argument stored in this class </dd></dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00075">75</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

<p>References <a class="el" href="Labelling_8h_source.html#l00062">labelling</a>.</p>

<p>Referenced by <a class="el" href="Labelling_8cpp_source.html#l00311">operator&lt;&lt;()</a>, and <a class="el" href="Labelling_8cpp_source.html#l00277">operator==()</a>.</p>

</div>
</div>
<a class="anchor" id="a600661b61ebd7f0da5faea3fdef97b6c"></a><!-- doxytag: member="Labelling::clone" ref="a600661b61ebd7f0da5faea3fdef97b6c" args="(Labelling *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classLabelling.html#a600661b61ebd7f0da5faea3fdef97b6c">Labelling::clone</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classLabelling.html">Labelling</a> *&#160;</td>
          <td class="paramname"><em>other</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Clone this labelling into a new one. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">other</td><td>A pointer to a <a class="el" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a> which will be the clone of this one </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">void</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00212">212</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

<p>References <a class="el" href="Labelling_8cpp_source.html#l00140">add_label()</a>, and <a class="el" href="Labelling_8h_source.html#l00062">labelling</a>.</p>

</div>
</div>
<a class="anchor" id="ac717b73662047c2ab68e0828ff3dc54e"></a><!-- doxytag: member="Labelling::empty" ref="ac717b73662047c2ab68e0828ff3dc54e" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classLabelling.html#ac717b73662047c2ab68e0828ff3dc54e">Labelling::empty</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check whether or not this labelling is empty. </p>
<dl class="retval"><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">bool</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00202">202</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

<p>References <a class="el" href="SetArguments_8cpp_source.html#l00094">SetArguments::empty()</a>, and <a class="el" href="Labelling_8h_source.html#l00062">labelling</a>.</p>

</div>
</div>
<a class="anchor" id="a9fba5e876b11a7cd0170b89b122cfdfb"></a><!-- doxytag: member="Labelling::end" ref="a9fba5e876b11a7cd0170b89b122cfdfb" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classLabelIterator.html">LabelIterator</a> <a class="el" href="classLabelling.html#a9fba5e876b11a7cd0170b89b122cfdfb">Labelling::end</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Return the last Label of the argument inside this set. </p>
<p>The function is used to cycle among all the Argument* stored in this <a class="el" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a> instance. You can use this function to enumerate the arguments store in this instance using this code:</p>
<div class="fragment"><pre class="fragment">  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it=labelingInstance-&gt;begin();it!=labellingInstance-&gt;end(); it++){
        cout &lt;&lt; <span class="stringliteral">&quot;argument stored: &lt;&lt; afInstance.getArgumentsByName(*it)&lt;&lt; endl;</span>
<span class="stringliteral">  }</span>
</pre></div><dl class="return"><dt><b>Returns:</b></dt><dd>an iterator pointing the Label of the last argument stored in this class </dd></dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00093">93</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

<p>References <a class="el" href="Labelling_8h_source.html#l00062">labelling</a>.</p>

<p>Referenced by <a class="el" href="Labelling_8cpp_source.html#l00311">operator&lt;&lt;()</a>, and <a class="el" href="Labelling_8cpp_source.html#l00277">operator==()</a>.</p>

</div>
</div>
<a class="anchor" id="a7d3ce55a661689eaa83408d4d9424117"></a><!-- doxytag: member="Labelling::exists_argument_labelling" ref="a7d3ce55a661689eaa83408d4d9424117" args="(Argument *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classLabelling.html#a7d3ce55a661689eaa83408d4d9424117">Labelling::exists_argument_labelling</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArgument.html">Argument</a> *&#160;</td>
          <td class="paramname"><em>arg</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Check whether an argument is in this labelling or not. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>A pointer to an <a class="el" href="classArgument.html" title="Class representing an Argument.">Argument</a> </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">bool</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00156">156</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

<p>References <a class="el" href="Labelling_8h_source.html#l00062">labelling</a>.</p>

</div>
</div>
<a class="anchor" id="a30feb527f78da10b5132f8acdd5d8f5b"></a><!-- doxytag: member="Labelling::find" ref="a30feb527f78da10b5132f8acdd5d8f5b" args="(const Argument *arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classLabelIterator.html">LabelIterator</a> <a class="el" href="classLabelling.html#a30feb527f78da10b5132f8acdd5d8f5b">Labelling::find</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classArgument.html">Argument</a> *&#160;</td>
          <td class="paramname"><em>arg</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>find a Label which has as key the pointer to an <a class="el" href="classArgument.html" title="Class representing an Argument.">Argument</a> </p>
<p>This function allows you to search in this set of Arguments to find a particular Label. You can use this function like this:</p>
<div class="fragment"><pre class="fragment">        <a class="code" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a>* A=<span class="keyword">new</span> <a class="code" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a>(af,(<span class="keywordtype">string</span>[]){<span class="stringliteral">&quot;A&quot;</span>,<span class="stringliteral">&quot;B&quot;</span>,<span class="stringliteral">&quot;D&quot;</span>},3);
        <a class="code" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a>* lab=<span class="keyword">new</span> <a class="code" href="classLabelling.html#a1b39efa4639854ab11d540037e24c425" title="Constructor.">Labelling</a>(A);
        <span class="keyword">auto</span> it=lab-&gt;find(af.getArgumentsByName(<span class="stringliteral">&quot;B&quot;</span>));
        cout &lt;&lt; *it &lt;&lt; endl;
</pre></div><dl class="pre"><dt><b>Precondition:</b></dt><dd><ul>
<li>arg not NULL</li>
</ul>
</dd></dl>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">arg</td><td>the pointer of the argument which has as name the Label to found </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>an iterator to the label of the <a class="el" href="classArgument.html" title="Class representing an Argument.">Argument</a> arg; </li>
<li>this-&gt;<a class="el" href="classLabelling.html#a9fba5e876b11a7cd0170b89b122cfdfb" title="Return the last Label of the argument inside this set.">end()</a> if the key was not found </li>
</ul>
</dd></dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00255">255</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

<p>References <a class="el" href="Labelling_8h_source.html#l00062">labelling</a>.</p>

</div>
</div>
<a class="anchor" id="a37bb1885f6412e0a2c66bde384413e43"></a><!-- doxytag: member="Labelling::get_label" ref="a37bb1885f6412e0a2c66bde384413e43" args="(Argument *)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Label <a class="el" href="classLabelling.html#a37bb1885f6412e0a2c66bde384413e43">Labelling::get_label</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classArgument.html">Argument</a> *&#160;</td>
          <td class="paramname"><em>arg</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the label of a given argument. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>A pointer to an argument </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname">Label</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00166">166</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

<p>References <a class="el" href="Labelling_8h_source.html#l00062">labelling</a>.</p>

</div>
</div>
<a class="anchor" id="aa100bea37cb704545d188252ef03286f"></a><!-- doxytag: member="Labelling::getSetArguments" ref="aa100bea37cb704545d188252ef03286f" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classSetArguments.html">SetArguments</a> * <a class="el" href="classLabelling.html#aa100bea37cb704545d188252ef03286f">Labelling::getSetArguments</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>converts a <a class="el" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a> structure in a <a class="el" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a> </p>
<p>The function creates a new <a class="el" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a> instance from a <a class="el" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a> ones. Both structures represents, more or less, a set of Arguments, but thery are incompatible between them. While the constructor of <a class="el" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a> resolves the conversion from <a class="el" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a> to <a class="el" href="classLabelling.html" title="Class representing a single labelling assignment.">Labelling</a>, this function solve the opposite conversion.</p>
<dl class="post"><dt><b>Postcondition:</b></dt><dd><ul>
<li>a new <a class="el" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a> instance is allocate din the heap and must be freed <b>manually</b></li>
</ul>
</dd></dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a <a class="el" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a> instance with the same Arguments store in the caller structure </dd></dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00110">110</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

<p>References <a class="el" href="SetArguments_8cpp_source.html#l00056">SetArguments::add_Argument()</a>, and <a class="el" href="Labelling_8h_source.html#l00062">labelling</a>.</p>

</div>
</div>
<a class="anchor" id="af8aa0d976a665c1a9ebbdb801d0a867d"></a><!-- doxytag: member="Labelling::inargs" ref="af8aa0d976a665c1a9ebbdb801d0a867d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classSetArguments.html">SetArguments</a> * <a class="el" href="classLabelling.html#af8aa0d976a665c1a9ebbdb801d0a867d">Labelling::inargs</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the set of arguments labelled as `in`. </p>
<dl class="retval"><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname"><a class="el" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a></td><td>* </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00175">175</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="afc828a13d1a3e406f56fa1f212b4824d"></a><!-- doxytag: member="Labelling::outargs" ref="afc828a13d1a3e406f56fa1f212b4824d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classSetArguments.html">SetArguments</a> * <a class="el" href="classLabelling.html#afc828a13d1a3e406f56fa1f212b4824d">Labelling::outargs</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the set of arguments labelled as `out`. </p>
<dl class="retval"><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname"><a class="el" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a></td><td>* </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00184">184</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="ae96fb462fa9b3bd7becbd7744e21eb78"></a><!-- doxytag: member="Labelling::size" ref="ae96fb462fa9b3bd7becbd7744e21eb78" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int <a class="el" href="classLabelling.html#ae96fb462fa9b3bd7becbd7744e21eb78">Labelling::size</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>get the number of elements stored in this set </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of elements stored in this set </dd></dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00231">231</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

<p>References <a class="el" href="Labelling_8h_source.html#l00062">labelling</a>.</p>

<p>Referenced by <a class="el" href="Labelling_8cpp_source.html#l00277">operator==()</a>.</p>

</div>
</div>
<a class="anchor" id="aedf4e3c3b0150317e5350945f088a424"></a><!-- doxytag: member="Labelling::undecargs" ref="aedf4e3c3b0150317e5350945f088a424" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classSetArguments.html">SetArguments</a> * <a class="el" href="classLabelling.html#aedf4e3c3b0150317e5350945f088a424">Labelling::undecargs</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Returns the set of arguments labelled as `undec`. </p>
<dl class="retval"><dt><b>Return values:</b></dt><dd>
  <table class="retval">
    <tr><td class="paramname"><a class="el" href="classSetArguments.html" title="Class encompassing a set of arguments.">SetArguments</a></td><td>* </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="Labelling_8cpp_source.html#l00193">193</a> of file <a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a8512ec47bffffe4ca1d8650cc61e55a9"></a><!-- doxytag: member="Labelling::labelling" ref="a8512ec47bffffe4ca1d8650cc61e55a9" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">map&lt;<a class="el" href="classArgument.html">Argument</a> *, Label&gt; <a class="el" href="classLabelling.html#a8512ec47bffffe4ca1d8650cc61e55a9">Labelling::labelling</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>a map that associate to each pointer of argument its name. It might be a little odd to set this field in this way. At the first glance, it should be better to define the data structure like this: </p>
<div class="fragment"><pre class="fragment">        map&lt;Label,Argument*&gt; <a class="code" href="classLabelling.html#a8512ec47bffffe4ca1d8650cc61e55a9">labelling</a>;
</pre></div><p> However, you should keep in mind that the Argument* is just a pointer while the Label is an entire string. So it is just natural to set as key of map a pointer (tiny structure) and the label as the value of the map (large structure). </p>

<p>Definition at line <a class="el" href="Labelling_8h_source.html#l00062">62</a> of file <a class="el" href="Labelling_8h_source.html">Labelling.h</a>.</p>

<p>Referenced by <a class="el" href="Labelling_8cpp_source.html#l00140">add_label()</a>, <a class="el" href="Labelling_8cpp_source.html#l00075">begin()</a>, <a class="el" href="Labelling_8cpp_source.html#l00212">clone()</a>, <a class="el" href="Labelling_8cpp_source.html#l00202">empty()</a>, <a class="el" href="Labelling_8cpp_source.html#l00093">end()</a>, <a class="el" href="Labelling_8cpp_source.html#l00156">exists_argument_labelling()</a>, <a class="el" href="Labelling_8cpp_source.html#l00255">find()</a>, <a class="el" href="Labelling_8cpp_source.html#l00166">get_label()</a>, <a class="el" href="Labelling_8cpp_source.html#l00110">getSetArguments()</a>, <a class="el" href="Labelling_8cpp_source.html#l00033">Labelling()</a>, and <a class="el" href="Labelling_8cpp_source.html#l00231">size()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>src/<a class="el" href="Labelling_8h_source.html">Labelling.h</a></li>
<li>src/<a class="el" href="Labelling_8cpp_source.html">Labelling.cpp</a></li>
</ul>
</div><!-- contents -->
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="classLabelling.html">Labelling</a>      </li>

    <li class="footer">Generated on Fri Jan 17 2014 11:47:52 for SemOpt by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.6.1 </li>
   </ul>
 </div>


</body>
</html>
